{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 载入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from random import uniform\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签，字体名称为win中中文字体对应的英文名\n",
    "plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "target_url = (\"https://archive.ics.uci.edu/ml/machine-learning-\"\n",
    "\"databases/undocumented/connectionist-bench/sonar/sonar.all-data\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>V0</th>\n",
       "      <th>V1</th>\n",
       "      <th>V2</th>\n",
       "      <th>V3</th>\n",
       "      <th>V4</th>\n",
       "      <th>V5</th>\n",
       "      <th>V6</th>\n",
       "      <th>V7</th>\n",
       "      <th>V8</th>\n",
       "      <th>V9</th>\n",
       "      <th>...</th>\n",
       "      <th>V51</th>\n",
       "      <th>V52</th>\n",
       "      <th>V53</th>\n",
       "      <th>V54</th>\n",
       "      <th>V55</th>\n",
       "      <th>V56</th>\n",
       "      <th>V57</th>\n",
       "      <th>V58</th>\n",
       "      <th>V59</th>\n",
       "      <th>V60</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0200</td>\n",
       "      <td>0.0371</td>\n",
       "      <td>0.0428</td>\n",
       "      <td>0.0207</td>\n",
       "      <td>0.0954</td>\n",
       "      <td>0.0986</td>\n",
       "      <td>0.1539</td>\n",
       "      <td>0.1601</td>\n",
       "      <td>0.3109</td>\n",
       "      <td>0.2111</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0027</td>\n",
       "      <td>0.0065</td>\n",
       "      <td>0.0159</td>\n",
       "      <td>0.0072</td>\n",
       "      <td>0.0167</td>\n",
       "      <td>0.0180</td>\n",
       "      <td>0.0084</td>\n",
       "      <td>0.0090</td>\n",
       "      <td>0.0032</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0453</td>\n",
       "      <td>0.0523</td>\n",
       "      <td>0.0843</td>\n",
       "      <td>0.0689</td>\n",
       "      <td>0.1183</td>\n",
       "      <td>0.2583</td>\n",
       "      <td>0.2156</td>\n",
       "      <td>0.3481</td>\n",
       "      <td>0.3337</td>\n",
       "      <td>0.2872</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0084</td>\n",
       "      <td>0.0089</td>\n",
       "      <td>0.0048</td>\n",
       "      <td>0.0094</td>\n",
       "      <td>0.0191</td>\n",
       "      <td>0.0140</td>\n",
       "      <td>0.0049</td>\n",
       "      <td>0.0052</td>\n",
       "      <td>0.0044</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.0262</td>\n",
       "      <td>0.0582</td>\n",
       "      <td>0.1099</td>\n",
       "      <td>0.1083</td>\n",
       "      <td>0.0974</td>\n",
       "      <td>0.2280</td>\n",
       "      <td>0.2431</td>\n",
       "      <td>0.3771</td>\n",
       "      <td>0.5598</td>\n",
       "      <td>0.6194</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0232</td>\n",
       "      <td>0.0166</td>\n",
       "      <td>0.0095</td>\n",
       "      <td>0.0180</td>\n",
       "      <td>0.0244</td>\n",
       "      <td>0.0316</td>\n",
       "      <td>0.0164</td>\n",
       "      <td>0.0095</td>\n",
       "      <td>0.0078</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.0100</td>\n",
       "      <td>0.0171</td>\n",
       "      <td>0.0623</td>\n",
       "      <td>0.0205</td>\n",
       "      <td>0.0205</td>\n",
       "      <td>0.0368</td>\n",
       "      <td>0.1098</td>\n",
       "      <td>0.1276</td>\n",
       "      <td>0.0598</td>\n",
       "      <td>0.1264</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0121</td>\n",
       "      <td>0.0036</td>\n",
       "      <td>0.0150</td>\n",
       "      <td>0.0085</td>\n",
       "      <td>0.0073</td>\n",
       "      <td>0.0050</td>\n",
       "      <td>0.0044</td>\n",
       "      <td>0.0040</td>\n",
       "      <td>0.0117</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0762</td>\n",
       "      <td>0.0666</td>\n",
       "      <td>0.0481</td>\n",
       "      <td>0.0394</td>\n",
       "      <td>0.0590</td>\n",
       "      <td>0.0649</td>\n",
       "      <td>0.1209</td>\n",
       "      <td>0.2467</td>\n",
       "      <td>0.3564</td>\n",
       "      <td>0.4459</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0031</td>\n",
       "      <td>0.0054</td>\n",
       "      <td>0.0105</td>\n",
       "      <td>0.0110</td>\n",
       "      <td>0.0015</td>\n",
       "      <td>0.0072</td>\n",
       "      <td>0.0048</td>\n",
       "      <td>0.0107</td>\n",
       "      <td>0.0094</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 61 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       V0      V1      V2      V3      V4      V5      V6      V7      V8  \\\n",
       "0  0.0200  0.0371  0.0428  0.0207  0.0954  0.0986  0.1539  0.1601  0.3109   \n",
       "1  0.0453  0.0523  0.0843  0.0689  0.1183  0.2583  0.2156  0.3481  0.3337   \n",
       "2  0.0262  0.0582  0.1099  0.1083  0.0974  0.2280  0.2431  0.3771  0.5598   \n",
       "3  0.0100  0.0171  0.0623  0.0205  0.0205  0.0368  0.1098  0.1276  0.0598   \n",
       "4  0.0762  0.0666  0.0481  0.0394  0.0590  0.0649  0.1209  0.2467  0.3564   \n",
       "\n",
       "       V9  ...     V51     V52     V53     V54     V55     V56     V57  \\\n",
       "0  0.2111  ...  0.0027  0.0065  0.0159  0.0072  0.0167  0.0180  0.0084   \n",
       "1  0.2872  ...  0.0084  0.0089  0.0048  0.0094  0.0191  0.0140  0.0049   \n",
       "2  0.6194  ...  0.0232  0.0166  0.0095  0.0180  0.0244  0.0316  0.0164   \n",
       "3  0.1264  ...  0.0121  0.0036  0.0150  0.0085  0.0073  0.0050  0.0044   \n",
       "4  0.4459  ...  0.0031  0.0054  0.0105  0.0110  0.0015  0.0072  0.0048   \n",
       "\n",
       "      V58     V59  V60  \n",
       "0  0.0090  0.0032    R  \n",
       "1  0.0052  0.0044    R  \n",
       "2  0.0095  0.0078    R  \n",
       "3  0.0040  0.0117    R  \n",
       "4  0.0107  0.0094    R  \n",
       "\n",
       "[5 rows x 61 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "try:\n",
    "    # 第一个参数比较灵活，可以是url,也可是文件路径，或者IO等。\n",
    "    df_sonar = pd.read_csv(\"../../data/sonar.csv\", header=0)\n",
    "except Exception as e:\n",
    "    print(e)\n",
    "    df_sonar = pd.read_csv(target_url, header=None, prefix='V')\n",
    "    df_sonar.to_csv(\"../../data/sonar.csv\", index=False)\n",
    "\n",
    "df_sonar.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 将target值变为数值型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "nrows, ncols = df_sonar.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "target: \n",
      " [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]\n"
     ]
    }
   ],
   "source": [
    "target = []\n",
    "for i in range(nrows):\n",
    "    #assign 0 or 1 target value based on \"M\" or \"R\" labels\n",
    "    if df_sonar.iat[i, -1] == \"M\":\n",
    "        target.append(1.0)\n",
    "    else:\n",
    "        target.append(0.0)\n",
    "\n",
    "print(\"target: \\n\", target)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 使用sklearn试一试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import LabelEncoder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "obj_label_encoder = LabelEncoder()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LabelEncoder()"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "obj_label_encoder.fit(df_sonar.iloc[:, -1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels = obj_label_encoder.transform(df_sonar.iloc[:, -1])\n",
    "labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      R\n",
       "1      R\n",
       "2      R\n",
       "3      R\n",
       "4      R\n",
       "      ..\n",
       "203    M\n",
       "204    M\n",
       "205    M\n",
       "206    M\n",
       "207    M\n",
       "Name: V60, Length: 208, dtype: object"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_sonar.iloc[:, -1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# fit_transform方法可以一步到位\n",
    "# labels = obj_label_encoder.fit_transform(df_sonar.iloc[:, -1])\n",
    "# labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1], dtype=int32)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "obj_label_encoder.transform(['R'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "问题是，sklearn的LabelEncoder不太好直接把0,1赋值对应M,R。也许是我没找到方法，目前可以写个函数变换.    \n",
    "笨方法是，写个函数，将transform的结果，用1减一下。  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用Column 35(第36列)属性和目标值绘制交会图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data_col = df_sonar.iloc[:, 35]\n",
    "\n",
    "fig = plt.figure(figsize=(16, 8))\n",
    "ax = fig.add_subplot(1, 1, 1)\n",
    "ax.scatter(data_col, target)\n",
    "ax.set_xlabel(\"Attribute Value\")\n",
    "ax.set_ylabel(\"Target Value\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上述图形有个问题：当其中一个变量只取有限的几个值的时候，很多点会叠在一起。  \n",
    "如果这种点很多，则只能看到很粗的一条线，分辨不出这些点是如何沿线分布的。  \n",
    "下面这种方法是很好的借鉴：**将有限值都加上一些随机数，并在绘图的时候，加上透明度（alpha=0.5）**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "target = [uniform(-0.1, 0.1)+v for v in target]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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7P7YakeP4VP36YcHjp3I3PzilbWcSa78fP89tw2xZNuzndez/F167ORcvvTcfG47vD+33rRPO0jTnLdhcm0UtNqIqUErG+yVa7E02FtnM5KtWe7k/t6X53J64UJm907ljiODm5VR9+mXe+88nAc/8fkkuarj+763v2bIJdue7WwmdPuR2dx+ZDYPHDuRW667VjvISHDehu0Z90F/QWuDJqXBHsSXy66RvVsOGC9evJT//Px8UpK5l87n2undefATLw0kcJyUuk/3bj8ym/e/5w1XtTHve/trRrYe3XLd3lfMtPa6RlU7OD7GvVOaqK+wHZMw6C9obdAkNNiD+nJds7vkEydOZfFizf6Zqbzp0L5cM7V7Ijcj2cxywPjYydPZM70rM9O7s7B4MU+fPpfbjxwcSOA4CXWfwVmeaRwHO5k53knASzsmoVOabK++TkIwDxuZhEF/uwc3qB+7Pm5ll8lhGMTOno+fnMszp8/lzMKFTO1Kzp2/kM987vk8+dyLdo1cw/IlMs4uXMieqctNw56pXTm9sDiwwNGOp7C25Znj2b3TOTm3kNm90z0HK3bPHQ/juCP2WrZaXyf98laQTMZlzgStDdppB2MUGvBBfLkeevSZvPaGa/OOr7khe6+ZyvlLl2dbb56dGZtRp35aDhh370qefO7F/OGps3nyuZcyVcrAAkeda1jf7Udmc/89t+VD992V+++5red2bCcBL+2YhE5psvX6OinBPGxkEgb9pQc3aKdrsUYhRWAQ6WrLqaa7ynRu2n855XT5khe80r13Hs6HfvNEnj97Pucu1Muz0xcu5fmXzudLz7+U931n9zuujts6RGhFV6nSXadlSvt82bgtd9nos91KfbWsBMZv88G1CFobtZMOxig04IP4clnHtTW3H5nN4YN78uzZPblmfjHnLl7Kwb27cmBmOocP7hlYR3Gc1iHCOOt6jeWkrOHsxcrlLvv37L6y3OV1N16bv3nvW4ZdvC3r52frXA+TMegvaB1Do9CAD+LLNQmjTv12/mLNe247lF2lXLnP7DS0adizkF1n9YxC1tCgLC93efXsnjzxlRdzemFxpJe79POzda6Hy8Z90F/QOoZGpQHv+ss1CaNO/fT4ybl88fmX8h+++EJu2H9N3nRoXw4dmGluwANoYxay66yeUcgaGpRxW+7Sz8/WuR4mg6B1DGnAXzbu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\n",
      "text/plain": [
       "<Figure size 1152x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data_col = df_sonar.iloc[:, 35]\n",
    "\n",
    "fig = plt.figure(figsize=(16, 8))\n",
    "ax = fig.add_subplot(1, 1, 1)\n",
    "ax.scatter(data_col, target, alpha=0.5)\n",
    "ax.set_xlabel(\"Attribute Value\")\n",
    "ax.set_ylabel(\"Target Value\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
